package com.microservice.salmon.fastdfs.client;

import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;

/**
 * <p>
 *  FastDFS 客户端工具接口
 * </p>
 *
 * @author 王洪庆 2019-01-07 00:35
 */
public interface FastDFSClient {
    /**
     * 上传文件
     *
     * @param file
     *            文件对象
     * @return 文件访问地址
     * @throws IOException
     */
    String uploadFile(MultipartFile file) throws IOException;

    String uploadFile2(MultipartFile file) throws IOException;

    String uploadQRCode(MultipartFile file) throws IOException;

    String uploadFace(MultipartFile file) throws IOException;

    String uploadBase64(MultipartFile file) throws IOException;

    /**
     * 将一段字符串生成一个文件上传
     *
     * @param content
     *            文件内容
     * @param fileExtension
     * @return
     */
    String uploadFile(String content, String fileExtension);

    /**
     * 将byte内容生成文件并上传
     * @param buff byte数组
     * @param fileExtension 文件扩展名
     * @return
     */
    String uploadFile(byte[] buff, String fileExtension);

    /**
     * 将byte内容生成文件并上传 如果是文件的话 ，containsThumb 必须为 false，或者使用二个参数的方法上传
     * @param buff byte数组
     * @param fileExtension 文件扩展名
     * @param containsThumb 是否生成缩略图，对图片可选，如果是文件的话 ，请设置为 false，或者使用二个参数的方法上传
     * @return
     */
    String uploadFile(byte[] buff, String fileExtension, boolean containsThumb);

    /**
     * 删除文件
     *
     * @param fileUrl
     *            文件访问地址
     * @return
     */
    void deleteFile(String fileUrl);

    /**
     * 下载文件
     * @param fileUrl  文件访问地址
     */
    InputStream downloadFile(String fileUrl);
}
